var log = function(message) {
	$("<li/>", { 
		html: message
	}).prependTo("#log");
}

var afficheDevList = function() {
	var construireListe = function(data) {
		$('#dev').empty();
		$.each(data, function(key, dev) {
			var lien = $('<a/>', {
				href : "#dev/"+dev.trigram,
				html : dev.trigram
			})
			var li = $('<li/>', {
				id : dev.trigram
			}).append(lien)
			.appendTo('#dev');
		});
		analyseAncre(location.hash.slice(1));
	}
	$.getJSON('dev/list?sortBy=livraison', function(data) {
		construireListe(data);
	});
}

var afficheDev = function(userName) {
	log("Afficher : " + userName);	
	$("#dev li").removeClass( "selected" );
	$("#dev li#"+userName).addClass( "selected" );
	$("#info h1").html(userName);
	$.getJSON('dev?name='+userName, function(dev) {
		selectedDev = dev;
		$("#info input").val(dev.lastLivraison);
	});
}

var analyseAncre = function(ancre){
	log("Analyse : " + ancre);
	var param = ancre.split("/");
	var action = param[0];
	log("Action : " + param[0]);
	log("param : " + param[1]);
	if(action == "dev") {
		afficheDev(param[1]);
	}
}

var isAdmin = function(callback) {
	$.getJSON('admin', function(data) {
		if(data=="ok") {
			callback();
		}
	});
}

var afficherLog = function() {
	$("#log").show( "blind");
	$(".logToggle img").addClass("moins");
	$(".logToggle img").removeClass("plus");
	$(".logToggle img").click(function() {
		$(".logToggle img").unbind();
		masquerLog();
	});
}

var masquerLog = function() {
	$("#log").hide();
	$(".logToggle img").addClass("plus");
	$(".logToggle img").removeClass("moins");
	$(".logToggle img").click(function() {
		$(".logToggle img").unbind();
		afficherLog();
	});
}

$(function() {
	$('input').prop('disabled', true);
	isAdmin(function(){
		$('<img/>', {
			class : "star",
			src : "image/cleardot.gif"
		}).appendTo('#user');
		$('<div/>').append("Nom")
				   .append(
						$('<input/>', {
							type:"text",
							id:"nom",
						}))
					.append("<br/>Date")
					.append(
						$('<input/>', {
							type:"text",
							id:"date"
						}).datepicker({ beforeShowDay: $.datepicker.noWeekends }))
		.appendTo("#ajout");

		$('<div/>', {
			class:"button",
			id:"ajouter",
			html:"Ajouter"
		}).appendTo("#ajout").click(function() {
			var dev = {};
			dev.trigram = $('#nom').val();
			dev.lastLivraison = $('#date').val();
			$.post("dev", {"request": JSON.stringify(dev)}, function(data) {
				afficheDevList();
				location.hash="#dev/"+$('#nom').val();
			});
		});
		
		$('<div/>', {
			class:"button",
			id:"changer",
			html:"Changeer"
		}).appendTo("#info").click(function() {
			var dev = selectedDev;
			dev.lastLivraison = $('#info input').val();
			$.post("dev", {"request": JSON.stringify(dev)}, function(data) {
				afficheDevList();
				location.hash="#dev/"+selectedDev.trigram;
			});
		});
		
		$("#info input").datepicker({ beforeShowDay: $.datepicker.noWeekends });
		
		$('input').prop('disabled', false);
	});
	masquerLog();

	afficheDevList();
	$(window).bind('hashchange', function () {
		analyseAncre(location.hash.slice(1));
    });
});